package subject.zichuan;

import java.util.HashMap;

/**
 * 给你一个整数数组 nums 和一个整数 k ，请你统计并返回 该数组中和为 k 的子数组的个数 。
 *
 * 子数组是数组中元素的连续非空序列。
 */
public class subarraySum {

    public static void main(String[] args) {
        // j=2 pre=3   (pre)
        // i=0 pre=1  (pre-k)  pre(i+1 - j) -> pre(j) - pre(i)  = 2 = k
        int[] nums = {1,1,1};
        int k = 2;
        int count = 0;
        int pre = 0;
        HashMap<Integer, Integer> map = new HashMap<>();
        map.put(0,1);
        for (int i = 0; i < nums.length; i++) {
            pre = pre + nums[i];
            if(map.containsKey(pre - k)){
                count = count + map.get(pre-k);
            }
            map.put(pre,map.getOrDefault(pre,0)+1);
        }
        System.out.println(count);

    }
}
